/*
 * Copyright 2020 eBlocker Open Source UG (haftungsbeschraenkt)
 *
 * Licensed under the EUPL, Version 1.2 or - as soon they will be
 * approved by the European Commission - subsequent versions of the EUPL
 * (the "License"); You may not use this work except in compliance with
 * the License. You may obtain a copy of the License at:
 *
 *   https://joinup.ec.europa.eu/page/eupl-text-11-12
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
 * implied. See the License for the specific language governing
 * permissions and limitations under the License.
 */
export default function AddDeviceToUserController(logger, $mdDialog, user, devices) {
    'ngInject';

    const vm = this;

    vm.ok = ok;
    vm.cancel = cancel;
    vm.isADeviceSelected = isADeviceSelected;
    vm.clickOnBox = clickOnBox;

    vm.user = angular.copy(user);

    vm.devices = angular.copy(devices);
    vm.filteredDevices = angular.copy(devices);
    vm.checkedDevices = [];

    vm.searchProps = ['name', 'vendor', 'displayIpAddresses'];
    vm.searchTerm = '';

    function clickOnBox(event) {
        event.preventDefault();
        event.stopImmediatePropagation();
    }

    function cancel() {
        $mdDialog.cancel();
    }

    function ok() {
        vm.filteredDevices.forEach((d) => {
            if (d.assignToUser) {
                vm.checkedDevices.push(d);
            }
        });
        $mdDialog.hide(vm.checkedDevices);
    }

    function isADeviceSelected () {
        let ret = false;
        vm.filteredDevices.forEach((d) => {
            ret = d.assignToUser || ret;
        });
        return ret;
    }

}
